using System;
using System.Resources;

namespace PluginFrame
{
	[Serializable]
	public abstract class AnalysisParameterConfiguration : IAnalysisParameterConfiguration
	{
		[NonSerialized]
		protected ResourceManager mResourceManager;

		[NonSerialized]
		protected IApplication mApplication;

		[NonSerialized]
		protected IConfigurationService mConfigurationService;

		protected IPcrExperimentProject mProject;

		protected string mItemName;

		protected int mProjectChannel;

		protected IProjectProperty mProjectProperty;

		protected bool mNeedReAnalysis;

		protected PcrSystemType mSystemType;

		protected int mTargetIndex;

		public int TargetIndex
		{
			get
			{
				return mTargetIndex;
			}
			set
			{
				mTargetIndex = value;
			}
		}

		public IPcrExperimentProject Project
		{
			get
			{
				return mProject;
			}
			set
			{
				mProject = value;
			}
		}

		public PcrSystemType SystemType
		{
			get
			{
				return mSystemType;
			}
			set
			{
				mSystemType = value;
			}
		}

		public IProjectProperty ProjectProperty
		{
			get
			{
				return mProjectProperty;
			}
			set
			{
				mProjectProperty = value;
			}
		}

		public string ProjectName
		{
			get
			{
				return mItemName;
			}
			set
			{
				mItemName = value;
			}
		}

		public int ProjectChannel
		{
			get
			{
				return mProjectChannel;
			}
			set
			{
				mProjectChannel = value;
			}
		}

		public bool IsNeedReAnalysis
		{
			get
			{
				return mNeedReAnalysis;
			}
			set
			{
				mNeedReAnalysis = value;
			}
		}

		public IApplication GetApplication()
		{
			return mApplication;
		}

		public void SetApplication(IApplication application)
		{
			mApplication = application;
			if (mApplication != null)
			{
				mResourceManager = ResourceManager.CreateFileBasedResourceManager("SystemConfiguration", mApplication.GetResourceFolder() + GetType().Namespace + "\\", null);
				mConfigurationService = (IConfigurationService)mApplication.GetService("ConfigurationService");
			}
		}

		public abstract IAnalysisParameterConfiguration Create();
	}
}
